export let fragmentShaderSource = `
    precision mediump float;
    varying vec3 v_norm;
    // 光照方向
    varying vec3 v_surfaceToCamera;
    varying vec3 v_surfaceToLight;
    uniform vec3 u_lightDirection;
    uniform float u_shininess;
    uniform float u_limit;
    
    void main(){
      vec3 normal = normalize(v_norm);
      // 中间方向的向量
      vec3 halfVector = normalize(v_surfaceToCamera + v_surfaceToLight);
      vec3 surfaceToLight = normalize(v_surfaceToLight);
      // 光照方向
      vec3 lightDir = normalize(u_lightDirection);
      // 是光照的负方向
      float light = 0.0;
      float specular = 0.0;
      float dotFromDirection = dot(surfaceToLight, -lightDir);
      if(dotFromDirection >= u_limit){
        light = dot(normal, surfaceToLight);
        if(light > 0.0){
          specular = pow( dot(normal, halfVector), u_shininess );
        }
      }
      gl_FragColor = vec4(1.0, 1.0, 0.0, 1.0);
      // [0,1,0] * 0.4 -> [0,0.4,0]
      // clamp(100, 0, 1) -> 1 夹住函数 像一个夹子一样 夹在一个范围
      gl_FragColor.rgb *= light; 
      // 高亮
      gl_FragColor.rgb += specular; 
      // 上面的高亮强度太大，我们采用下面的数学默写计算方法， 这样高亮比较集中
      // gl_FragColor.rgb += pow(specular, 10.0); 
    }
`
